package Reflect;

import java.util.*;

public class ReflectDemo2 {
    //通过反射来获取要实例化的类的对象
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> s = Class.forName("java.lang.String");
        System.out.println(s);

        test(new ArrayList<String>());
        test(new LinkedList<Object>());
        test(new ArrayList<Integer>());
        //test(new LinkedHashMap<>());

        Scanner sc = new Scanner(System.in);
//        System.out.println("请输入类的全限定名");
//        String s1 = sc.nextLine();
         /*
            java.util.ArrayList
            java.util.HashMap
            java.util.Date
            reflect.Person
         */
        Class<?> aClass = Class.forName("java.util.ArrayList");
        Object test = aClass.newInstance();
        System.out.println(test);
//        System.out.println(s1);


    }

    //?泛型<?>是什么意思？
    //经过函数测试我们可以知道?所表示的范围很大从无穷小的子类到无穷大的Object父类都可以传递
    // List所表示的范围很大从无穷小的子类到自己都可以接受(多态,动态绑定)
    public static void test(List<?> list){
        System.out.println(list);
    }

}
